#ifndef __DOUBLE_LINK_LIST_H__
#define __DOUBLE_LINK_LIST_H__

// 导入头文件
#include "Element_data.h"

//基本操作
// 双向链表的创建
Double_Link_List* init_double_link_list();

// 双向链表的插入
void insert_double_node(Double_Link_List* list, Element_data data, int index);

// 双向链表的删除    我这个删除无返回，你们需要写 带返回的
void delete_double_node(Double_Link_List* list, int index);

// 双向链表的查找
Double_Node* find_double_node_pos(Double_Link_List* list, int id);
Double_Node* find_double_node_name(Double_Link_List* list, char* name);

// 双向链表的遍历
void print_double_link_list(Double_Link_List* list);
void print_forward_double_link_list(Double_Link_List* list);
void print_backwards_double_link_list(Double_Link_List* list);
// 双向链表的判空
/*
    返回值  为空 则返回     true	1
    返回值  不为空 则返回   false	0
*/
bool is_empty_double_link_list(Double_Link_List* list);

// 双向链表的清空
void clear_double_link_list(Double_Link_List* list);

// 双向链表的合并
Double_Link_List* merge_double_link_lists(Double_Link_List* list1, Double_Link_List* list2);



// 双向链表的销毁
void free_double_link_list(Double_Link_List * list);
void _free_double_link_list(Double_Link_List ** list);


#endif

